const store = {
    state: {
        num: 20
    },
    actions: {  // 只放同步方法
        add1(newState: { num: number }) {
            newState.num++
        },
        add2(newState: { num: number }, action: { type: string, val: number }) {
            newState.num += action.val
        },
        addAsync(newState: { num: number }) {
            newState.num++
        },

    },
    // 优化redux-thunk的异步写法（模仿Vuex）
    asyncActions: {
        addAsync(dispatch: Function) {
            setTimeout(() => {
                dispatch({ type: 'add1' })
            }, 1000)
        }
    },

    // 名字统一管理
    // add1: "add1",
    // add2:'add2'

    /**
     * 优化一
     */
    // actionNames:{
    //     add1:"add1",
    //     add2:"add2"
    // }

    /**
     * 优化二
     */
    actionNames: {}
}

// actionNames自动生成，不用每次添加一个方法，往actionNames添加对应键值
let actionNames = {}
for (let key in store.actions) {
    actionNames[key] = key
}
store.actionNames = actionNames



export default store